import os
import yaml


# 创建类
class YamlReader:
    # 初始化，判断yaml文件是否存在
    def __init__(self, yamlf):
        if os.path.exists(yamlf):
            self.yamlf = yamlf
        else:
            raise FileNotFoundError("yaml文件不存在")
        # 定义以下私有变量来判断是否读取过该yaml文档
        self._data = None
        self._data_all = None

    # yaml文件读取-->单个文档读取
    def data(self):
        # 判断若是第一次调用data，则直接读取yaml文件，如果不是第一次读取，则直接返回之前保存的数据
        # 如果self._data不存在，则读取yaml文档，否则返回之前保存的数据
        if not self._data:
            with open(self.yamlf, "rb") as f:
                self._data = yaml.safe_load(f)
        return self._data

    # yaml文件读取-->多个文档读取
    def data_all(self):
        # 判断若是第一次调用data，则直接读取yaml文件，如果不是第一次读取，则直接返回之前保存的数据
        # 如果self._data不存在，则读取yaml文档，否则返回之前保存的数据
        if not self._data_all:
            with open(self.yamlf, "rb") as f:
                self._data_all = list(yaml.safe_load_all(f))
        return self._data_all
